OpenAI APIを使って画像を作成してみた
こんにちは。サービス部の武田です。
自然言語から画像を生成するAIサービスとしてDALL-Eが提供されています。このサービスはブラウザでアクセスすることで、対話形式で画像が生成できます。
OpenAIではDALL-EのAPIが提供されているため、自身のアプリケーションに簡単に組み込めます。今回はこのAPIを使って画像を作成してみました。
DALL-Eの画像作成について
DALL-Eでは現在、次の3種類のAPIが提供されています。なおこのAPIはベータとなっており、現在も進化をしている状態とのことです。
- テキストから画像を作成する
- 既存の画像をテキストで編集する
- 既存の画像に似た画像(バリエーション)を作成する
今回は1の、ゼロベースで画像を作成するAPIを使用してみました。
やってみた
事前にopenai
のインストールと、OPENAI_API_KEY
環境変数にOpenAIのAPIキーを設定しておく必要があります。
$ pip install openai $ export OPENAI_API_KEY=xxxx
次のようなプログラムを書いてみました。
import openai import os import base64 NUMBER_OF_IMAGES = 2 openai.api_key = os.environ["OPENAI_API_KEY"] response = openai.Image.create( prompt="An impressionist painter's illustration of three calico cats playing together.", n=NUMBER_OF_IMAGES, size="512x512", response_format="b64_json", ) for data, n in zip(response["data"], range(NUMBER_OF_IMAGES)): img_data = base64.b64decode(data["b64_json"]) with open(f"image_{n}.png", "wb") as f: f.write(img_data)
prompt
に作成したい画像についての指示を書きます。日本語では「3匹の三毛猫が仲良く遊んでいる印象派の画家が描いたようなイラスト。」といった内容です。最初は日本語で書いてみましたが一部伝わらない部分があったため、英語にしました。
n
は作成する画像の枚数で1〜10
が指定できます。
size
は作成する画像のサイズで、256x256
、512x512
、1024x1024
が指定できます。
response_format
は作成した画像をどのように返すかで、url
かb64_json
が指定できます。今回はそのままローカルに画像を保存するためb64_json
を指定しました。
あとは返ってきた画像データをBase64デコードして、画像として保存するだけです。
実行するたびに結果は変わりますが、次のような画像が作成されました。かなりいい感じですね!
まとめ
私は絵を描くのが上手ではないので、いい感じにAIが描いてくれると助かりますね。また人物の画像を何枚か作成してみましたが、顔が崩れたり身体がおかしくなっているものも多く作成されました。この辺はモデルの学習が進むと改善されていくと思われます。今後の進化に期待したいです。